XmlStackBuilder — API Reference

Kompletní seznam veřejných metod a properties třídy XmlStackBuilder. Všechny metody jsou volatelné z FoxPro přes wwDotnetBridge.


Properties

Obecné

Property Typ Popis
Depth int Aktuální hloubka zásobníku elementů (read-only)
CurrentElement XElement Aktuální element na zásobníku (read-only)
Root XElement Kořenový element (read-only)
CsvDelimiter string Oddělovač pro CSV export validačních chyb (default ";")

HTML generování

Property Typ Default Popis
HtmlDocumentTitle string "" Název dokumentu v HTML záhlaví
HtmlCompanyName string "" Název firmy v HTML záhlaví
HtmlReportPeriod string "" Období sestavy (např. "12/2025")
HtmlOutputMode string "print" Režim: "print" nebo "interactive"
HtmlShowTechnicalNames bool false Zobrazit technické názvy elementů
HtmlFormatNumbers bool true Formátovat čísla s oddělovačem tisíců
HtmlHideEmptyValues bool false Skrýt prázdné hodnoty
HtmlXsdValidationPath string "" Cesta k XSD pro inline validaci
HtmlErrorMessage string Poslední chybová zpráva (read-only)
TemplateWarnings string Varování z validace JSON šablony (read-only)

Batch, tisk a průběh

Property Typ Default Popis
BatchOutput string "" Batch režim: "" (off), cesta PDF, "PRINTER:", "PRINTER:název"
ShowProgress bool false Zobrazit WinForms dialog s průběhem renderování
PdfFromHtml bool false Dokumenty: PDF přes HTML→WebView2 místo přímého MigraDoc
PrintDialog bool false Zobrazit dialog při tisku (auto-reset po zobrazení)
PrintFromPage int 0 Od stránky (0 = od začátku)
PrintToPage int 0 Do stránky (0 = do konce)
PrintCopies int 1 Počet kopií (1–999)
PrintDuplex int 0 0=default, 1=simplex, 2=oboustranný vertical, 3=horizontal
PrintCollate bool false Kompletovat kopie
BatchPageCount int 0 Počet stránek v batchi (read-only)
BatchDocumentCount int 0 Počet dokumentů v batchi (read-only)

ShowProgress zobrazí WinForms dialog s progress barem, číslem řádku a tlačítkem "Storno" pro přerušení. Dialog běží na samostatném STA threadu — renderování zůstává synchronní. Při zrušení se nastaví HtmlErrorMessage a Render() vrátí false. Property přežívá Reset() i EndBatch().


XML Builder

Metoda Návrat Popis
CreateRoot(elementName) self Vytvoří kořenový element
CreateRootWithNamespace(elementName, namespaceName) self Vytvoří kořen s namespace
Push(elementName) self Přidá child element a vstoupí do něj
PushWithNamespace(elementName, namespaceName) self Push s explicitním namespace
Push(elementName, content) self Push s obsahem (text/číslo)
Pop() self Vystoupí z aktuálního elementu
PopToRoot() self Vystoupí na kořen
PopTo(depth) self Vystoupí na zadanou hloubku
ResetToRoot() void Vystoupí na kořen (void varianta)
AddAttribute(name, value) self Přidá atribut (prázdné přeskočí)
AddOptionalAttribute(name, value) self Přidá volitelný atribut
AddRequiredAttribute(name, value) self Přidá povinný atribut (null → "")
AddAttributes(params (name, value)[]) self Přidá více atributů najednou
SetValue(value) self Nastaví textový obsah elementu
AddElement(elementName) self Přidá prázdný child element
AddElement(elementName, content) self Přidá child element s obsahem
AddElement(elementName, content, attributes[]) self Přidá element s obsahem a atributy
AddElementWithValue(elementName, content) self Přidá element s validací
AddElementWithXmlContent(elementName, xmlContent) self Vloží surové XML potomky (strip VFPData)
AddComment(comment) self Přidá XML komentář
AddCData(data) self Přidá CDATA sekci
AddNamespace(prefix, namespaceName) self Přidá namespace deklaraci
SetDefaultNamespace(namespaceName) self Nastaví výchozí xmlns

Výstup XML

Metoda Návrat Popis
ToDocument() XDocument Vrátí interní XDocument
ToXmlString() string XML jako string
ToFormattedXmlString() string XML s odsazením
SaveToFile(filePath) void Uloží XML do souboru
Reset() void Vymaže XML, zachová batch/print/config

Validace XML

Metoda Návrat Popis
SetValidationEnabled(enabled) void Zapne/vypne validaci
RegisterValidationRule(rule) void Registruje pravidlo (regex, min/max, délka)
RegisterElementNamespace(elemName, nsUri, parent) void Registruje namespace pro element
RegisterElementNs(elemName, nsUri, parent) void Totéž bez overloadu (FoxPro)
RegisterRequiredAttribute(key) void Registruje povinný atribut ("Element:Attr")
GetValidationErrors() List Seznam validačních chyb
GetValidationErrorCount() int Počet chyb
HasValidationErrors() bool Jsou chyby?
GetValidationErrorsAsLog() string Chyby jako textový log
GetValidationErrorsAsCsv() string Chyby jako CSV
ClearValidationErrors() void Vymaže chyby

HTML z XML (opis XML s popisky z XSD)

Metoda Návrat Popis
SaveToHtmlFile(htmlPath, xsdPath) bool Uloží XML jako HTML s popisy z XSD
ToHtmlString(xsdPath) string Vrátí HTML string
SaveToHtmlFileWithValidation(htmlPath, xsdPath) bool HTML s inline XSD validací (zvýrazněné chyby)
SaveXmlFileToHtmlWithValidation(xmlPath, htmlPath, xsdPath) bool HTML z XML souboru s validací
ValidateTableReportJson(jsonMetadata) string Validuje JSON šablonu tabulkové sestavy
ValidateDocumentJson(jsonMetadata) string Validuje JSON šablonu dokumentu

Tabulkové sestavy (HTML)

Metoda Návrat Popis
ToTableReport() string HTML sestava (auto-detekce struktury)
ToTableReportWithHeader(title, company, filter) string HTML sestava se záhlavím
ToTableReportWithMetadata(jsonMetadata) string HTML sestava s JSON šablonou
SaveTableReportToFile(htmlPath, title, company, filter) bool Uloží HTML sestavu
SaveTableReportToFileWithMetadata(htmlPath, jsonMetadata) bool Uloží s JSON šablonou (string)
SaveTableReportToFileWithMetadataFile(htmlPath, jsonFilePath) bool Uloží s JSON ze souboru (UTF-8)
GenerateTableReportMetadata() string Vygeneruje JSON šablonu z XML (light)
GenerateTableReportMetadataFull() string Vygeneruje kompletní JSON šablonu

Dokumenty — faktury, dodací listy (HTML)

Metoda Návrat Popis
ToDocumentHtml(jsonMetadata) string HTML dokument z JSON šablony
SaveDocumentToFile(htmlPath, jsonMetadata) bool Uloží HTML dokument (JSON string)
SaveDocumentToFileFromJson(htmlPath, jsonFilePath) bool Uloží HTML dokument (JSON ze souboru)

Unified Render API

Univerzální metody — auto-detekce typu šablony (tabulka/dokument) a formátu výstupu (HTML/PDF/XLSX) z přípony souboru.

Metoda Návrat Popis
Render(outputPath, jsonOrFile) bool Renderuje z interního XML builderu
RenderFromFiles(outputPath, jsonOrFile, xmlOrFile) bool Renderuje z externích souborů/stringů

outputPath: přípona určuje formát — .html, .pdf, .xlsx, PRINTER: (tisk) jsonOrFile: začíná { → JSON string, jinak → cesta k souboru xmlOrFile: začíná < → XML string, jinak → cesta k souboru


PDF generování

Přes WebView2 (HTML → PDF)

Metoda Návrat Popis
SaveHtmlToPdf(htmlPath, pdfPath) bool Konvertuje existující HTML na PDF
SaveDocumentToPdf(pdfPath, jsonMetadata) bool Dokument → HTML → PDF
SaveDocumentToPdfFromJson(pdfPath, jsonFilePath) bool Dokument → PDF (JSON ze souboru)
SaveTableReportToPdf(pdfPath, jsonMetadata) bool Sestava → HTML → PDF
IsPdfAvailable() bool Je WebView2 Runtime nainstalován?

Přímé PDF (MigraDoc) — bez WebView2, vysoký výkon

Metoda Návrat Popis
SaveTableReportToPdfDirect(pdfPath, jsonMetadata) bool Sestava → PDF přímo (JSON string)
SaveTableReportToPdfDirectFromFile(pdfPath, jsonFilePath) bool Sestava → PDF (JSON ze souboru)
SaveDocumentToPdfDirect(pdfPath, jsonMetadata) bool Dokument → PDF přímo (JSON string)
SaveDocumentToPdfDirectFromFile(pdfPath, jsonFilePath) bool Dokument → PDF (JSON ze souboru)

XLSX generování (ClosedXML)

Metoda Návrat Popis
SaveTableReportToXlsx(xlsxPath, jsonMetadata) bool Sestava → Excel (JSON string)
SaveTableReportToXlsxFromFile(xlsxPath, jsonFilePath) bool Sestava → Excel (JSON ze souboru)

FRX konvertor

Metoda Návrat Popis
ConvertFrxToJson(frxXml) string FRX XML → JSON šablona (auto-detekce typu)
ConvertFrxToJsonFile(frxXmlPath, outputJsonPath) bool FRX soubor → JSON soubor (auto-detekce)
ConvertFrxToTableReportJson(frxXml) string FRX → JSON (vynuceně tabulka)
ConvertFrxToDocumentJson(frxXml) string FRX → JSON (vynuceně dokument)
ConvertFrxToTableReportJsonFile(frxXmlPath, outputJsonPath) bool FRX soubor → JSON soubor (vynuceně tabulka)
ConvertFrxToDocumentJsonFile(frxXmlPath, outputJsonPath) bool FRX soubor → JSON soubor (vynuceně dokument)
GenerateSampleXmlFromJson(jsonTemplate) string JSON šablona → vzorové XML
GenerateSampleXmlFromJsonWithRoot(jsonTemplate, rootName) string Vzorové XML s vlastním kořenem
GenerateFoxProCodeFromJson(jsonTemplate) string JSON šablona → FoxPro PRG kód
GenerateFoxProCodeFromJsonWithRoot(jsonTemplate, rootName) string PRG s vlastním kořenem
ConvertFrxToAllFiles(frxXmlPath, outputFolder) bool FRX → JSON + XML + PRG (auto-detekce)
ConvertFrxToTableReportAllFiles(frxXmlPath, outputFolder) bool FRX → JSON + XML + PRG (vynuceně tabulka)
ConvertFrxToDocumentAllFiles(frxXmlPath, outputFolder) bool FRX → JSON + XML + PRG (vynuceně dokument)
ExtractLiteralsFromJson(jsonTemplate) string Extrahuje přeložitelné texty jako XML
ExtractLiteralsFromJsonFile(jsonFilePath) string Totéž ze souboru

Auto-detekce typu (table/document) z FRX někdy klasifikuje špatně. Varianty s vynuceným typem (TableReport/Document v názvu) toto obcházejí.


Generování JSON šablon z cursor schema

Generování JSON šablon pro tabulkové sestavy přímo z definice FoxPro kurzoru (cursor schema). Vstupem je string se schématem tabulky a volitelné parametry — výstupem je JSON s odhadnutými šířkami sloupců v mm.

Metoda Návrat Popis
GenerateColumnsFromSchema(cursorSchema, options) string Vrátí JSON fragment s columns a printColumns
GenerateReportFromSchema(outputJsonPath, cursorSchema, options) bool Zapíše kompletní JSON report šablonu do souboru

cursorSchema: Dva podporované formáty:

options: Řetězec "key1:value1,key2:value2,..." s konfigurací:

Klíč Default Popis
dataFontPt 8 Velikost fontu datových buněk (pt)
pageSize A4 Formát papíru: A4, A3
orientation auto portrait, landscape, auto
maxDecimal 2 Max počet desetinných míst
maxLenString 20 Max šířka textových sloupců (znaky)
groups Skupiny: stredisko;ucet (; odděluje)
noTotalColumns Sloupce bez součtů: id;doklad (; odděluje)
element data Název XML elementu se záznamy
title Nadpis sestavy (podporuje {element.field})
tfiltr Filtr sestavy (podporuje {element.field})
culture cs-CZ Kultura pro formátování
rowNumbers false Číslování řádků: false, global, group

Tisk

Jednorázový tisk

Metoda Návrat Popis
PrintWithDialog(jsonOrFile) bool Tisk s dialogem (XML z builderu)
PrintFromFilesWithDialog(jsonOrFile, xmlOrFile) bool Tisk s dialogem (externí soubory)
PrintSilent(jsonOrFile, printer, fromPage, toPage) bool Tichý tisk (XML z builderu)
PrintFromFilesSilent(jsonOrFile, xmlOrFile, printer, from, to) bool Tichý tisk (externí soubory)
PrintPdfFile(pdfPath, printerName) bool Tisk PDF přes SumatraPDF

Utility

Metoda Návrat Popis
GetAvailablePrinters() string Seznam tiskáren (oddělené \n)
GetDefaultPrinter() string Název výchozí tiskárny
GetReportPageCount(jsonOrFile) int Počet stránek sestavy (−1 = chyba)
GetPrinterCapabilities(printerName) string Schopnosti tiskárny (duplex, papír, zásobník, barva)

Batch tisk / PDF

Metoda Návrat Popis
EndBatch() int Ukončí batch (sloučí PDF / vyčistí). Vrátí počet stránek.
ResetPrint() void Resetuje tiskové properties na default

Batch se řídí přes property BatchOutput — viz sekce Properties.


VS Code editor

Metoda Návrat Popis
OpenReportEditor(jsonPath, xmlPath) bool Otevře VS Code s IntelliSense + live preview
OpenReportEditorWithSchemas(jsonPath, xmlPath, schemaFolder) bool Totéž s explicitní cestou ke schématům

Markdown → HTML

Metoda Návrat Popis
RenderMarkdownToHtml(markdownContent, outputPath) bool Markdown string → HTML soubor
RenderMarkdownFileToHtml(markdownPath, outputPath) bool Markdown soubor → HTML soubor

Poznámky